import numpy as np
from sqlalchemy.sql.functions import random

arr1 = np.array([1, 2, 3])
print(arr1, type(arr1))

# 类型会变成一致的，string > float > int
arr2 = np.array(['1', 2, 3.3])
print(arr2)
arr3 = np.array([1, 2, 3, 4.5])
print(arr3)

arr4 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(arr4)
# 用ndmin来规定数组维度
arr5 = np.array([1, 2, 3, 4, 5, 6, 7, 8], ndmin=2)
print(arr5)

# 用dtype来规定数据类型
# arr6 = np.array([1, 2, 3, 4, 5, 6, 7, 8], dtype=np.float32)
arr6 = np.array([1, 2, 3, 4, 5, 6, 7, 8], dtype='f')
print(arr6)
student = np.dtype([('name', 'S20'), ('age', 'i4'), ('marks', 'f4')])
arr7 = np.array([('abc', 21, 50), ('xyz', 18, 75)], dtype=student)
print(arr7)

arr8 = np.asarray([1, 2, 3, 4, 5], dtype='f')
print(arr8)
arr9 = np.asarray((1, 2, 3, 4, 5))
print(arr9)
arr10 = np.asarray([(1, 2, 3), (4, 5, 6)])
print(arr10)

# 创建一个形状为3x2的二维NumPy数组，并指定数组的数据类型为整数。数组的初始值是未初始化的内存值。
arr11 = np.empty([3, 2], dtype=int)
print(arr11)

# 用0来创建数组
arr12 = np.zeros([3, 2], dtype=int)
print(arr12)
arr13 = np.zeros([2, 2], dtype=[('x', 'i4'), ('y', 'f')])
print(arr13)

# 用1来创建数组
arr14 = np.ones([3, 2], dtype=int)
print(arr14)

# 用指定值来创建数组
arr15 = np.full([3, 2], fill_value=1024, dtype=int)
print(arr15)

# 创建一个10x10的二维方阵(numpy矩阵)，其中对角线元素为1，其他位置均为0
arr16 = np.eye(10, dtype='i4')
print(arr16)

# 创建一个从1开始，至11（不包括11）的数组，步长为2
arr17 = np.arange(1, 11, 2)
print(arr17)

str1 = b'abcdef higklmn opq rst uvw xyz'
# 从偏移量为2的位置开始，读取5个字符
arr18 = np.frombuffer(str1, dtype='S1', count=5, offset=2)
print(arr18)

x = [1, 2, 3, 4]
z = iter(x)
print(z, type(z))
arr19 = np.fromiter(z, dtype=int)
print(arr19)

# 从0到10生成元素有5个的数组，并且为等差数列
arr20 = np.linspace(0, 10, 5, dtype='f')
print(arr20)

# 起始值和终止值分别对应10的指数形式，生成为对数等差数列
arr21 = np.logspace(1, 4, 4, dtype='f')
print(arr21)
# 起始值和终止值分别对应4的指数形式
arr22 = np.logspace(0, 4, 9, base=4, dtype='f')
print(arr22)

rand1 = np.random.rand(3)
print(rand1, type(rand1))
rand2 = np.random.rand(3, 2)
print(rand2)

# 返回5个0-10的随机整数，但不包含10
rand3 = np.random.randint(0, 10, 5)
print(rand3)

# 随机浮点数，正态分布
rand4 = np.random.randn(10)
print(rand4)


